﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ABC_SA_DM;
using ABC_SA_DAL;
using System.Drawing;
using System.Data;

namespace ABC_SA_BL
{
    public class Destino_BL
    {
        public Boolean agregaDestino(int? idDestino, string nombre, string pais, string provincia, string ciudad, string descripcion, string gpsx, string gpsy, byte[] imagen)
        {


            Destino_DAL dal = new Destino_DAL();
            Boolean agregado = false;

            Destino des; // creo el destino 
            des = new Destino();

            //des.IdDestino = 2;
            des.NombreDestino = nombre;
            des.Pais = pais;
            des.Provincia = provincia;
            des.Ciudad = ciudad;
            des.Descripcion = descripcion;
            des.Gpsx = gpsx;
            des.Gpsy = gpsy;
            des.Imagen = imagen;


            agregado = dal.agregarDestino(des);

            return agregado;
        }
        // fin del agregaDestino



        // metodo modificar destino

        public Boolean modificarDestino(int id, string nombre, string pais, string provincia, string ciudad, string descripcion, string gpsx, string gpsy, byte[] imagen)
        {

            Destino_DAL dal = new Destino_DAL();

            Destino des; // creo el destino 
            des = new Destino();


            des.IdDestino = id;
            des.NombreDestino = nombre;
            des.Pais = pais;
            des.Provincia = provincia;
            des.Ciudad = ciudad;
            des.Descripcion = descripcion;
            des.Gpsx = gpsx;
            des.Gpsy = gpsy;
            des.Imagen = imagen;



            bool modificado = dal.modificarDestino(des);
            return modificado;

        }// fin del metodo agregar destino



        /// <summary>
        /// Metodo eliminar destino
        /// </summary>
        /// <param name="id">id</param>
        /// <returns>destino</returns>
        public Boolean eliminarDestino(int id)
        {

            bool eliminado = false;

            Destino_DAL dal = new Destino_DAL();

            eliminado = dal.EliminarDestino(id);

            return eliminado;
        }  // fin del metodo eliminar destino






        // Consultas con strore procedure 

        public static List<Destino> ConsultarLista()
        {
            List<Destino> Eventos = new List<Destino>();
            Destino_DAL dal = new Destino_DAL();
            DataTable dtEventos = dal.GetAllDestinos();
            try
            {
                foreach (DataRow drEventos in dtEventos.Rows)
                {
                    Eventos.Add(GeneraDestino(drEventos));
                }
                return Eventos;
            }
            catch (Exception ex)
            {
                throw new System.ArgumentException("Error al consultar los eventos: ", ex);
            }
        }// fin del metodo consulta destinos




        // metodo genera destino
        public static Destino GeneraDestino(DataRow pInfo)
        {
            Destino destino = new Destino();
            try
            {


                destino.IdDestino = Convert.ToInt32(pInfo["id_destino"]);
                destino.NombreDestino = pInfo["nombre"].ToString();
                destino.Pais = pInfo["pais"].ToString();
                destino.Provincia = pInfo["provincia"].ToString();
                destino.Ciudad = pInfo["ciudad"].ToString();
                destino.Descripcion = pInfo["descripcion"].ToString();
                destino.Gpsx = pInfo["gpsx"].ToString();
                destino.Gpsy = pInfo["gpsy"].ToString();
                destino.Imagen = (Byte[])pInfo["imagen"];
                return destino;


            }
            catch (Exception ex)
            {
                throw new System.ArgumentException("Error al  generar destino: ", ex);
            }
        }// fin del metodo genera destino



        // consultar destino simple
        public static Destino consultaDestinoSimple(int id_destino)
        {
            Destino destino = new Destino();
            Destino_DAL dal = new Destino_DAL();
            DataTable dtDestino = dal.GetAllDestinos();
            DataRow[] resultado = dtDestino.Select(String.Format("id_destino = {0}", id_destino));
            try
            {
                if (resultado.Length > 0)
                {
                    destino = GeneraDestino(resultado[0]);
                }
                return destino;
            }
            catch (Exception ex)
            {
                throw new System.ArgumentException("Error al  Obtener evento: ", ex);
            }
        }// fin metodo consultar destino simple









        // NO BORRAR DE AQUI PARA ABAJO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

        public List<Destino> consultaListaDestinos()
        {
            // Se consulta la lista de destinos
            Destino_DAL Destino_DAL = new Destino_DAL();

            return Destino_DAL.consultaListaDestinos();

        }




        public Destino mostrarDestinoSimple(int idDestino)
        {

            // Se consulta el destino que se desea modificar
            Destino_DAL destino_DAL = new Destino_DAL();
            Destino destinoConsultado = destino_DAL.mostrarDestinoSimple(idDestino);

            return destinoConsultado;
        }

    }


}